讓一堆前端工程師奔忙的由來...當作下一階段的起頭吧。
除了到最近各家瀏覽器大放異彩,瀏覽器的歷史幾乎就是兩家公司互相鬥爭的歷史。我記得自己最早是在windows3.1上面玩mosaic,這也是最早瀏覽器的base,網景跟IE都是從他衍生出來的。網景以開發出plugin架構,在早期瀏覽器的舞臺開始佔上風,這時微軟已經藉由windows95統一天下,接下來使出作業系統內建瀏覽器的殺手鐧,網景就漸漸敗退,後來靠Mozilla基金會苟延殘喘。
在早期兩個瀏覽器互相競爭的時代,html、css、dom等標準就開始制定了,但是從來沒有一家完全符合過標準,對於標準的「違背」也是互有領先,而微軟獨大後,在IE加了更多東西,也有許多也不符合標準。這個狀況隨著IE8的出現有機會逐漸改觀,但是恐怕得花很長時間才有機會扭轉。
所以從早期開始,網頁工程師手邊大概就隨時有Javascript / dom /css的手冊做參考,手冊裡面最重要的參考就是相容性的表格,哪個瀏覽器的哪個版本跟哪個指令或語法相容,這是做網頁開發永遠的痛。現在許多人常去的,大概是w3schools,不過他的資料有點過時...也許參考PPK的網站是個好主意:http://www.quirksmode.org/,PPK在這個網站上維護了一份相當完整的瀏覽器相容性表格,而且比較常更新。(Peter-Paul Koch是荷蘭人,前端工程師,幾本著名的javascript / ajax書籍的作者。)
除了瀏覽器不符合標準之外,其實還有一個問題。Javascript在瀏覽器這個host環境中執行時,他的global物件就是window物件。不過呢...關於window物件是沒有標準存在的,DOM標準以及DOM HTML標準,規範的地方只及於window.document。W3C其實有一份非正式文件,定義了window物件1.0版的規格草案:Window Object 1.0,但是內容真的還非常非正式...恐怕無法直接參考。這份Window Object 1.0文件是2006年發布的,怎麼後來沒下文?其實看看HTML5就會明白。HTML5裡面會對瀏覽器的行為有完整規範,包括底層從伺服器取得網頁內容的方式到最後呈現在視窗中,以及window物件的方法等,都有提供「未來」的規範。所以...標準還要再等等。
要使用Javascript來做網頁程式開發,首先要面對的,就是以上一堆歷史包袱帶來的「不相容」問題,目前這個問題還是存在在IE及其他瀏覽器之間。套一句PPK在他網站上引用Sartre的名言:「Hell is other browsers」...
除了相容性,其實DOM的規範本身也多少有一些問題及陷阱。Douglas Crockford在他的一些演講裡有提到:http://developer.yahoo.net/blogs/theater/archives/2007/01/douglas_crockford_an_inconveni.html(有點舊,但是還是值得參考,至少目前情況沒有大改變)
至於CSS,那就更不用說了...如果碰到問題,還是上http://www.quirksmode.org查比較快。
總結一下,問題大致上還是可以歸納成幾個部份:
處理瀏覽器的不相容問題,增加更多使用的方便性,讓網頁成為一個更豐富的互動平台,就變成Javascript Library以及Javascript Framework的重點。接下來幾天,就深入研究一下幾家主流javascript library及framework的架構,看看他們如何建構出有彈性而可延伸的核心,如何解決不相容問題,以及如何擴充這些library及framework的功能。
實在令人不解
HTTP,SMTP,FTP大家就可以遵循得好好的
但到了HTML, javascript
各家瀏覽器就各顯神通
然後說別人都不相容,不標準
大概是IT世界越混亂
IT人越有飯吃吧...XD
因為這些 protocol 訂定的人沒有 Microsoft,IBM...XD
ㄟ
Sartre的名言:「Hell is other browsers」.
沙特只有講:l'enfer c'est les autres.
Hell is other people
PPK只是借用沙特的名言
並修改一下
喔喔,謝謝您,不是您提,我還不知道這是Satre的哪句話呢?(因為理論上他不可能用browser才對)